diff --git a/system/core/Output.php b/system/core/Output.php
index 51aff9c..9bc02fc 100755
--- a/system/core/Output.php
+++ b/system/core/Output.php
@@ -67,9 +67,9 @@
 	/**
 	 * Mime-type for the current page
 	 *
-	 * @var array
+	 * @var string
 	 */
-	protected $mime_type		= NULL;
+	protected $mime_type		= 'text/html';
 	/**
 	 * Determines wether profiler is enabled
 	 *
@@ -337,7 +337,7 @@
 		// Is minify requested?
 		if ($CFG->item('minify_output') === TRUE)
 		{
-			$output = $this->minify($output,$this->mime_type);
+			$output = $this->minify($output, $this->mime_type);
 		}
 
 
@@ -485,7 +485,7 @@
 		log_message('debug', 'Cache file written: '.$cache_path);
 		
 		// Send HTTP cache-control headers to browser to match file cache settings.
-		$this->set_cache_header($_SERVER['REQUEST_TIME'],$expire);
+		$this->set_cache_header($_SERVER['REQUEST_TIME'], $expire);
 	}
 
 	// --------------------------------------------------------------------
@@ -537,7 +537,7 @@
 		else
 		{	
 			// Or else send the HTTP cache control headers.
-			$this->set_cache_header($last_modified,$expire);
+			$this->set_cache_header($last_modified, $expire);
 		}
 
 		// Display the cache
@@ -556,7 +556,7 @@
 	 * @param 	int		timestamp of when should the requested page expire from cache
 	 * @return	void
 	 */
-	public function set_cache_header($last_modified,$expiration)
+	public function set_cache_header($last_modified, $expiration)
 	{		
         $max_age = $expiration - $_SERVER['REQUEST_TIME'];
 
@@ -585,13 +585,8 @@
 	 * @param 	string
 	 * @return	string
 	 */
-	public function minify($output,$type='text/html')
+	public function minify($output, $type='text/html')
 	{
-		if($type===NULL)
-		{
-			$type = 'text/html';
-		}
-
 		switch ($type)
 		{
 			case 'text/html':
@@ -601,33 +596,33 @@
 				// Keep track of <pre> <code> and <textarea> tags as
 				// they were before processing.
 				// We'll want to return them to this state later.
-				preg_match_all('{<pre.+</pre>}msU',$output,$pres_clean);
-				preg_match_all('{<code.+</code>}msU',$output,$codes_clean);
-				preg_match_all('{<textarea.+</textarea>}msU',$output,$textareas_clean);
+				preg_match_all('{<pre.+</pre>}msU', $output, $pres_clean);
+				preg_match_all('{<code.+</code>}msU', $output, $codes_clean);
+				preg_match_all('{<textarea.+</textarea>}msU', $output, $textareas_clean);
 
 				// Minify the CSS in all the <style> tags.
-				preg_match_all('{<style.+</style>}msU',$output,$style_clean);
+				preg_match_all('{<style.+</style>}msU', $output, $style_clean);
 				foreach ($style_clean[0] as $s)
 				{
 					$output = str_replace($s, $this->minify($s,'text/css'), $output);
 				}
 
 				// Replace multiple spaces with a single space.
-				$output = preg_replace('!\s{2,}!',"\n",$output);
+				$output = preg_replace('!\s{2,}!', "\n", $output);
 				
 				// Remove comments (non-MSIE conditionals)
-				$output = preg_replace('{\s*<!--[^\[].*-->\s*}msU','',$output);
+				$output = preg_replace('{\s*<!--[^\[].*-->\s*}msU', '', $output);
 
 				// Remove spaces around block-level elements.
 				$output = preg_replace('{\s*(</?(html|head|title|meta|script|link|style|body|h[1-6]|div|p|br).*>)\s*}', '$1', $output);
 
 				// Replace mangled <pre> etc. tags with unprocessed ones.
-				preg_match_all('{<pre.+</pre>}msU',$output,$pres_messed);
-				preg_match_all('{<code.+</code>}msU',$output,$codes_messed);
-				preg_match_all('{<textarea.+</textarea>}msU',$output,$textareas_messed);
-				$output = str_replace($pres_messed[0],$pres_clean[0],$output);
-				$output = str_replace($codes_messed[0],$codes_clean[0],$output);
-				$output = str_replace($textareas_messed[0],$textareas_clean[0],$output);
+				preg_match_all('{<pre.+</pre>}msU', $output, $pres_messed);
+				preg_match_all('{<code.+</code>}msU', $output, $codes_messed);
+				preg_match_all('{<textarea.+</textarea>}msU', $output, $textareas_messed);
+				$output = str_replace($pres_messed[0], $pres_clean[0], $output);
+				$output = str_replace($codes_messed[0], $codes_clean[0], $output);
+				$output = str_replace($textareas_messed[0], $textareas_clean[0], $output);
 				
 				$size_after = strlen($output);
 				$savings_percent = round(100 - ($size_after / $size_before * 100));
@@ -640,10 +635,10 @@
 			case 'text/css':
 			
 				// Remove spaces around curly brackets, colons, and semi-colons
-				$output = preg_replace('!\s*(:|;|}|{)\s*!','$1',$output);
+				$output = preg_replace('!\s*(:|;|}|{)\s*!', '$1', $output);
 				
 				// Replace spaces with line breaks to limit line lengths
-				$output = preg_replace('!\s+!',"\n",$output);
+				$output = preg_replace('!\s+!', "\n", $output);
 
 			break;
 		}
